草庐IT

SQL EXISTS 运算符

全部标签

c++ - 一些随机的 C 问题(ascii 魔法和位运算符)

我正在尝试学习C编程,我正在研究一些源代码,但有些东西我不明白,尤其是关于位运算符。我阅读了一些关于此的网站,我对它们的作用有了一些了解,但是当我回头查看这些代码时,我无法理解它们使用的原因和方式。我的第一个问题与按位运算符无关,而是一些ascii魔术:谁能给我解释一下下面的代码是如何工作的?chara=3;intx=a-'0';我知道这样做是为了将char转换为int,但我不明白其背后的逻辑。为什么/如何运作?现在,关于按位运算符,我真的迷失在这里。这段代码是做什么的?if(~pointer->intX&(1我在某处读到~反转位,但我看不出这条语句在做什么以及为什么要这样做。与此行相

c++ - 为模板类重载运算符<<

我正在尝试为返回流的二叉树实现一个方法。我想使用方法中返回的流在屏幕上显示树或将树保存在文件中:这两个方法在二叉树的类中:声明:voidstreamIND(ostream&,constBinaryTree*);friendostream&operator&);templateostream&operator&tree){streamIND(os,tree.root);returnos;}templatevoidstreamIND(ostream&os,Node*nb){if(!nb)return;if(nb->getLeft())streamIND(nb->getLeft());osg

c++ - 为什么运算符有时是独立的,有时是类方法?

为什么有时操作符覆盖被定义为类中的方法,例如MyClass&MyClass::operatorFoo(MyClass&other){....returnthis;};有时它是一个单独的函数,比如MyClass&operatorFoo(MyClass&first,MyClass&bar)它们是等价的吗?当您以一种方式进行操作以及以另一种方式进行操作时,适用哪些规则? 最佳答案 如果您希望能够执行类似3+obj的操作,您必须定义一个自由(非成员)运算符。如果你想让你的运营商受到保护或私有(private),你必须让他们成为方法。一些运算

c++ - C++ 中的 << 运算符在做什么?

在下面的示例中,到底是什么?运营商在做什么?我猜它不是按位运算符。std::cout我了解代码将在此处执行的操作:使用标准输出、发送此文本、发送行尾。只是我从来没有遇到过使用这个我刚开始使用C++。而且,作为某种运营商,很难搜索对此的描述及其含义。有人可以启发我和/或指导我使用google搜索什么吗?谢谢罗斯 最佳答案 答案是:默认情况下,运算符对整数类型进行左移,但可以重载它以执行您想要的任何操作!这种将字符串通过管道传输到流中的语法首先(我认为)在C++发明者BjarneStroustroup的同名书籍中得到了演示TheC++P

c++ - 条件中的逗号运算符

我已经阅读了很多地方,但我真的无法理解条件中指定的行为。我知道在赋值中它会计算第一个操作数,丢弃结果,然后计算第二个操作数。但是对于这段代码,它应该做什么?CPartFile*partfile=(CPartFile*)lParam;ASSERT(partfile!=NULL);boolbDeleted=false;if(partfile,bDeleted)partfile->PerformFileCompleteEnd(wParam);IF中的partfile是不必要的参数,还是有任何意义? 最佳答案 在这种情况下,它是一个不必要的

c++ - typeid 运算符返回的对象的生命周期是多少?

如果我调用typeid并检索返回的type_info的地址:consttype_info*info=&(typeid(Something));typeid返回的对象的生命周期是多少?指向该对象的指针将保持多长时间有效? 最佳答案 无论实现如何实现它们,typeid表达式的结果都是左值,这些左值引用的对象的生命周期必须持续到程序结束。来自ISO/IEC14882:20035.2.8[expr.typeid]:Theresultofatypeidexpressionisanlvalue[...]Thelifetimeoftheobjec

c++ - 为什么重载赋值运算符会返回对类的引用?

classitem{public:item&operator=(constitem&rh){......return*this;}};下面的签名有错吗?voidoperator=(constitem&rh);itema,b;a=b;//equivalenttoa.operator=(b);sothereisnoneedtoreturnthis. 最佳答案 这不是“错误”,而是令人惊讶。赋值计算为目标对象。这就是内置的含义。如果您为自己的类(class)定义不同,人们可能会感到困惑。例子:intc;while((c=getchar()

c++ - 我如何着手重载 C++ 运算符以允许链接?

我和我之前的许多程序员一样,正在拼命编写C++中的通过权矩阵类。我从来没有做过非常严重的运算符重载,这是导致问题的原因。本质上,通过单步执行这就是我所说的导致问题的原因。cMatrixKev=CT::cMatrix::GetUnitMatrix(4,true);Kev*=4.0f;cMatrixBaz=Kev;Kev=Kev+Baz;//HERE!根据调试器,似乎正在发生的事情是添加了Kev和Baz,但随后值丢失了,当涉及到重新分配给Kev时,内存只是其默认的不可靠值。我如何重载我的运算符(operator)以允许此声明?我的(精简的)代码如下。//headerclasscMatrix

c++ - 是 。和 -> 在 C 和 C++ 中真的是运算符吗?

您可能一直在努力,自己也在努力,那.和->是运算符,用于检索结构(C)或类(C++)的成员。但是,我怀疑它们是运算符-因为,如果它们是运算符,它们的输入类型是什么?此外,两侧的标识符是相互依赖的-这是+运算符所缺乏的特征。如果这是正确的-在什么意义上这些在实践中仍然被标记为运算符,以及它们在语言理论方面的正式定义是什么。 最佳答案 您假设唯一可以作为参数传递给运算符的类型是可以在语言中定义的类型。我认为编译器可以识别的任何类型都可以作为参数传递,包括内部类型,例如“标识符”。该运算符在其AST表示中将有两个参数,这足以让您定义语义。

c++ - 重载运算符 << - C++

背景我有一个在内部使用vector的容器类。我已经为这个包装类提供了一个方法AddChar(std::string),它对内部vector执行push_back()。在我的代码中,有时我必须向容器中添加多个项目。为此,我必须使用container.AddChar("First");container.AddChar("Second");这会使代码变大。所以为了让它更容易,我打算重载运算符container两个项目将被添加到基础vector中。这是我使用的代码classExtendedVector{private:vectorcontainer;public:friendExtended